/*用户注册函数*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "..\..\HeadFiles\PagesH\LoginPage.h"
#include "..\..\HeadFiles\MD5.h"
#include "..\..\HeadFiles\UsedStd.h"


void createFile(void) // 用来创建储存用户账号密码的文仄1�7
{
    FILE *fp;
    fp = fopen("../Data/LoginData/UserData.txt", "w"); // 以写入方式打弢�文件
    if (fp == NULL)
    { // 如果打开失败，输出错误信息并返回
        printf("Unable to create file\n");
        return;
    }
    fclose(fp); // 关闭文件浄1�7
    fp = NULL;
}

int registerUser() // 定义丢�个函数，用来实现注册功能，并将用户名和密码写入到文件丄1�7
{
    FILE *fp;   // 文件指针
    users user; // 用户结构体变釄1�7
    
    char decryptId[33];
    char decryptPwd[33];

    fp = fopen("../Data/LoginData/UserData.txt", "r"); // 以只读方式打弢�文件

    if (fp == NULL)
    {                         // 如果打开失败，则创建文件
        createFile(); // 创建文件
    }
    printf("\n");
    printf("Please enter the account number you want to register:\n");
    scanf("%s", user.id); // 输入账号
    strcpy(userNameCpy,user.id);
    MD5Function(user.id,decryptId);
    
    users tmp;                                            // 临时结构体变量，用来存放文件中读取的数据
    int flag = 0;                                         // 用来判断是否有重复账戄1�7
    while (fscanf(fp, "%s %s\n", tmp.id, tmp.pwd) != EOF) 
    // 循环读取文件中的数据，直到文件末射1�7
    {

        if (strcmp(decryptId, tmp.id) == 0)
        { 
            // 如果输入的账号已经存圄1�7
            flag = 1;
            break;
        }
    } 

    if (flag)
    {
       
        return 1; // 返回霢�要重新登录的信息
    }
    fp = fopen("../Data/LoginData/UserData.txt", "a+"); // 以追加方式打弢�文件

    printf("Please enter the password you want to register:\n");
    scanf("%s", user.pwd); // 输入密码

    unsigned char tmePwd[STR_MAX_LEN];
    printf("Please enter the password you want to register again:\n");
    scanf("%s", tmePwd); // 输入密码
    
    MD5Function(user.pwd,decryptPwd);
    if (strcmp(user.pwd, tmePwd) != 0)
    {
        
        return 2;   //返回密码错误
    }
    fprintf(fp, "%s %s\n", decryptId, decryptPwd); // 将账号和密码写入到文件中
    fclose(fp);// 关闭文件浄1�7
    fp = NULL;
    return 0;                                  // 返回注册成功
}

